#pragma once

#include "../SGD Wrappers/CSGD_Direct3D.h"
#include "../SGD Wrappers/CSGD_TextureManager.h"
#include "../SGD Wrappers/tinyxml.h"
#include "../SGD Wrappers/tinystr.h"
#include "../AnimationManager.h"
#include "../ObjectFactory.h"

#include "../Player.h"
#include "../Entity.h"


#include "../ObjectManager.h"
#include "../MessageSystem.h"
#include "../Message.h"
#include "../EventSystem.h"
#include "../NEvent.h"

#include "../SGD Wrappers/SGD_String.h"
#include <iostream>
#include <vector>
#include <string>
using std::vector;
using std::string;


typedef CObjectFactory< TSTRING, CEntity >	CObjectFact;
class CSpawnSystem 
{
private:
	CSpawnSystem(void);
	CSpawnSystem(const CSpawnSystem&);
	CSpawnSystem& operator=(const CSpawnSystem&);
	~CSpawnSystem(void);


	CSGD_TextureManager*	m_pTM;
	CSGD_Direct3D*			m_pD3D;
	CObjectFact* m_pOF;
	CObjectManager* m_pOM;
	CAnimationManager*	m_pAM;
	CMessageSystem* m_pMS;
	CEventSystem* m_pES;

public:	

	static CSpawnSystem* GetInstance(void);

	bool Spawn(CEntity* pTarget,string type, int numberof,int x,int y,int speedOffset);

};

